package com.superlz.demo.security.validator;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

/**
 * 自定义验证注解
 *
 * @Target：注解的可标记位置
 *
 * @Retention：被描述的注解在什么范围内有效（
 *        1.SOURCE:在源文件中有效（即源文件保留）
 * 　　　　2.CLASS:在class文件中有效（即class保留）
 * 　　　　3.RUNTIME:在运行时有效（即运行时保留）
 * ）
 *
 * @Constraint：声明为自定义验证注解（validatedBy：验证逻辑的类）
 *
 * message、groups和payload必需属性
 *
 * @Author: lz
 * @Description:
 * @Date: 2019/6/28
 */
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyConstraintValidator.class)
public @interface MyConstraint {

    /**
     * 校验不通过的提示信息
     * @return
     */
    String message();


    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };

}
